home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
falcon
/
programm.ing
/
asm56.zoo
/
pink.a56
< prev
next >
Wrap
Text File
|
1992-11-14
|
2KB
|
83 lines
; pink noise (1/f) generator
; based on noise generator from Dr. Bubb but extended to 24 bits
; uses simple one-tap recursive filter
;
; written by: Quinn Jensen (jensenq@npd.novell.com)
;
include 'tdsg.basic.a56'
;***************************************************************
;
; sample rate computations
;
;***************************************************************
dot
org x:$10
NSTATE dc 1 ;STATE OF NOISE GENERATOR (SHIFT REG)
org y:$0
org p:dot ;go back to P-space
;
; non-interrupt code
;
hf_init
MOVE #$FEEDEE,X0 ;INITIAL STATE OF NOISE GENERATOR
MOVE X0,X:<NSTATE
rts
;
; fs = 32.552083 kHz
;
hf_comp
jsr <saveregs
jsr NOISE
move #.005,x1
move #.990,y1
move a,x0
mpyr x0,x1,a x:<out_l,x0
macr x0,y1,a
move a,x:<out_l
jsr NOISE
move a,x0
mpyr x0,x1,a x:<out_r,x0
macr x0,y1,a
move a,x:<out_r
jsr <restregs
rts
; NOISE GENERATION ROUTINE. THIS ROUTINE USES A 15 BIT SHIFT
; REGISTER LEFT JUSTIFIED IN THE VARIABLE "NSTATE". AFTER THE STATE
; IS LOADED, IT IS CHECKED TO SEE IF IT IS NORMALIZED. IF IT IS
; NORMALIZED (TOP TWO BITS ARE DIFFERENT), A 1 IS SET AS THE INPUT
; TO THE SHIFT REGISTER AND THE REGISTER IS SHIFTED AND SAVED.
;
; B23 B22 B9 B8
; ______________________________________________
; | S14 | S13 | | S0 |
; | | | . . . | |<----------
; |_______|_____|________________________|_______ |
; | | |
; \ / |
; XOR |
; \_________________________________________________
;
;
; ASSUMES SCALING MODE IS OFF
;
NOISE ;DO NOISE GENERATION LOOP
CLR B X:<NSTATE,A ;GET A ZERO IN B
TST A #>$000001,X0 ;CHECK A, GET A 1 IN LSB POSITION
TNR X0,B ;IF NORMALIZED, THEN XOR=1
ADD B,A ;SET LSB
ASL A ;SHIFT BITS
MOVE A1,X:<NSTATE ;SAVE STATE
RTS ;RETURN WITH STATE
END